package ro.isdc.navigator.course.domain;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import ro.isdc.navigator.misc.domain.Entity;
import ro.isdc.navigator.professor.domain.Professor;

/**
 * Course class.
 * 
 * @author Andrei Chirila
 */
public class Course extends Entity {

	/**
	 * Generated Serial Version UID
	 */
	private static final long serialVersionUID = 2291052166655259353L;

	/**
	 * Course name
	 */
	private String courseName;
	
	/**
	 * The description of the Course
	 */
	private String courseDescription;

	/**
	 * Didactic field or category.
	 */
	private DidacticField didacticField;

	/**
	 * The professor that owns the course
	 */
	private Professor owningProfessor;

	/**
	 * @return the courseName
	 */
	public String getCourseName() {
		return courseName;
	}

	/**
	 * @param courseName
	 *          the courseName to set
	 */
	public void setCourseName(final String courseName) {
		this.courseName = courseName;
	}

	/**
	 * @return the didacticField
	 */
	public DidacticField getDidacticField() {
		return didacticField;
	}

	/**
	 * @param didacticField
	 *          the didacticField to set
	 */
	public void setDidacticField(final DidacticField didacticField) {
		this.didacticField = didacticField;
	}

	/**
	 * @return the owningProfessor
	 */
	public Professor getOwningProfessor() {
		return owningProfessor;
	}

	/**
	 * @param owningProfessor
	 *          the owningProfessor to set
	 */
	public void setOwningProfessor(final Professor owningProfessor) {
		this.owningProfessor = owningProfessor;
	}
	
  /**
   * @return the courseDescription
   */
  public String getCourseDescription() {
    return courseDescription;
  }

  /**
   * @param courseDescription the courseDescription to set
   */
  public void setCourseDescription(final String courseDescription) {
    this.courseDescription = courseDescription;
  }

  /**
   * @see java.lang.Object#toString()
   */
  public String toString() {
    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
        .appendSuper(super.toString()).append("courseDescription",
            this.courseDescription).append("owningProfessor",
            this.owningProfessor).append("didacticField", this.didacticField)
        .append("courseName", this.courseName).toString();
  }

}
